<?php
/**
 * Smarty plugin
 * @package Smarty
 * @subpackage plugins
 */

/**
 * delete a dir recursively (level=0 -> keep root)
 * WARNING: no tests, it will try to remove what you tell it!
 *
 * @param string $dirname
 * @param integer $level
 * @param integer $exp_time
 * @return boolean
 */

//  $dirname, $level = 1, $exp_time = null


function smarty_core_rmdir($params, &$smarty) {
	if (! isset ( $params ['level'] )) {
		$params ['level'] = 1;
	}
	if (! isset ( $params ['exp_time'] )) {
		$params ['exp_time'] = null;
	}
	
	if ($_handle = @opendir ( $params ['dirname'] )) {
		
		while ( false !== ($_entry = readdir ( $_handle )) ) {
			if ($_entry != '.' && $_entry != '..') {
				if (@is_dir ( $params ['dirname'] . DIRECTORY_SEPARATOR . $_entry )) {
					$_params = array ('dirname' => $params ['dirname'] . DIRECTORY_SEPARATOR . $_entry, 'level' => $params ['level'] + 1, 'exp_time' => $params ['exp_time'] );
					smarty_core_rmdir ( $_params, $smarty );
				} else {
					$smarty->_unlink ( $params ['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params ['exp_time'] );
				}
			}
		}
		closedir ( $_handle );
	}
	
	if ($params ['level']) {
		return @rmdir ( $params ['dirname'] );
	}
	return ( bool ) $_handle;

}

/* vim: set expandtab: */

?>
